package com.testing.class2;

public class BitMath {
    public static void main(String[] args) {
//        byte a=-33;
//        //强制转换，因为进行运算的时候，整数默认用int运算。
//        byte b=(byte)(~a);
//        //进行整数运算的时候，按位取反就相当于计算值对应的正负值
//        int c =~a;
//        System.out.println(b);
//        System.out.println(c);

        char i=33;
        char j=77;
        //左位移n位 就相当于乘以 2^n。
//        int x= i<<26;
//        System.out.println(x);
//        //左移的时候注意符号位，如果符号位移动成了1，那么就变成了负数了。
//        System.out.println((byte)x);

        //右移一位相当于除以2
        int y= i>>6;
        System.out.println(y);


        System.out.println(i);
        System.out.println(j);
        int k= i^j;
        //按位与
        System.out.println(j&i);
        //按位或
        System.out.println(j|i);
//        //按位异或
//        //字符串拼接操作 +符号运算优先级高于位运算。所以要用()提高位运算优先级。
//        System.out.println("i和j异或的结果："+(char)(i^j));
//
//        //异或有个特征   ：
//        System.out.println("k和j异或的结果："+(char)(k^j));
//        System.out.println("i和k异或的结果："+(char)(k^i));
//
//
//        boolean z= true & false;
//        boolean y=true | false;
//        System.out.println(z);
//        System.out.println(y);




    }

}
